/*
 * Licensed to the Apache Software Foundation (ASF) under one or more
 * contributor license agreements.  See the NOTICE file distributed with
 * this work for additional information regarding copyright ownership.
 * The ASF licenses this file to You under the Apache License, Version 2.0
 * (the "License"); you may not use this file except in compliance with
 * the License.  You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package types

import (
	"errors"
)

var (
	ErrExit          = errors.New("downstream process completed")
	IsDirectResponse = "true"
	PhaseName        = []string{
		InitPhase:                 "InitPhase",
		DownFilter:                "DownFilter",
		MatchRoute:                "MatchRoute",
		DownFilterAfterRoute:      "DownFilterAfterRoute",
		ChooseHost:                "ChooseHost",
		DownFilterAfterChooseHost: "DownFilterAfterChooseHost",
		DownRecvHeader:            "DownRecvHeader",
		DownRecvData:              "DownRecvData",
		DownRecvTrailer:           "DownRecvTrailer",
		Oneway:                    "Oneway",
		Retry:                     "Retry",
		WaitNotify:                "WaitNotify",
		UpFilter:                  "UpFilter",
		UpRecvHeader:              "UpRecvHeader",
		UpRecvData:                "UpRecvData",
		UpRecvTrailer:             "UpRecvTrailer",
		End:                       "End",
	}
)

type Phase int

const (
	InitPhase Phase = iota
	DownFilter
	MatchRoute
	DownFilterAfterRoute
	ChooseHost
	DownFilterAfterChooseHost
	DownRecvHeader
	DownRecvData
	DownRecvTrailer
	Oneway
	Retry
	WaitNotify
	UpFilter
	UpRecvHeader
	UpRecvData
	UpRecvTrailer
	End
)
